﻿using System;
using System.Linq.Expressions;
using System.ComponentModel;


namespace Devtm.ServiceModel.Discovery.Collection
{

    public interface ITableIndexedCollection<T> : IEnumerableNotifier<T>
    {
        string NameProperty { get; set; }
        //void Dispose();
        void Clear();
        T Add(T item);

        void AddList(System.Collections.Generic.IList<T> items);
        //void AddRange(params T[] items);

        bool Contains(T item);
        bool ContainsKeyFrom(T item);

        //void CopyTo(T[] array, int indexarray);
        int Count { get; }
        bool IsSynchronized();
        System.Collections.ICollection Keys();
        void Remove(T item);
        object SyncRoot();
        void Update(T item);
        System.Collections.ICollection Values();
        bool TryRemove(T item);

        bool ThrowIfNotExistOnGet { get; set; }

    }

 
}

